<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Linker (Computerprogramm)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Linker_(Computerprogramm)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Linker_Computerprogramm rootpage-Linker_Computerprogramm skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Linker (Computerprogramm)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>Unter einem <b>Linker</b> oder <b>Binder</b> (auch: <b>Bindelader</b>) versteht man ein <a href="Computerprogramm" title="Computerprogramm">Computerprogramm</a>, das einzelne <a href="Modul_(Software)" title="Modul (Software)">Programmmodule</a> zu einem ausführbaren Programm zusammenstellt (verbindet). Auf <a href="IBM" title="IBM">IBM</a>-<a href="Gro%C3%9Frechner" title="Großrechner">Großrechnersystemen</a> wird der Linker <i>linkage editor</i> (englisch) genannt.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Die meisten Programme enthalten Bestandteile oder Module, die in anderen Programmen verwendet werden können. Mehrere <a href="Kompiliert" class="mw-redirect" title="Kompiliert">kompilierte</a> Module mit <a href="Funktion_(Programmierung)" title="Funktion (Programmierung)">Funktionen</a> (<i>Objektdateien</i>) können zu Funktionsbibliotheken (<i><a href="Programmbibliothek" title="Programmbibliothek">Programmbibliotheken</a></i>) zusammengefasst werden. Der <a href="Quelltext" title="Quelltext">Code</a> wird durch den Linker zum Hauptprogramm hinzugefügt, falls die entsprechende Funktion benötigt wird.
</p><p>Um ein Programmmodul in einem anderen Programm verwenden zu können, müssen die symbolischen Adressen der Funktionen und <a href="Variable_(Programmierung)" title="Variable (Programmierung)">Variablen</a> des Moduls in <a href="Speicheradresse" title="Speicheradresse">Speicheradressen</a> umgewandelt werden. Diese Aufgabe übernimmt der Linker. Der Linkvorgang erfolgt nach der <a href="Kompilierung" class="mw-redirect" title="Kompilierung">Kompilierung</a> und ist meistens der letzte Arbeitsschritt zur Erstellung eines Programms.
</p>
<div class="mw-heading mw-heading2"><h2 id="Statisches_Linken">Statisches Linken</h2></div>
<p>Das <i>statische Linken</i> erfolgt typischerweise am Ende der <a href="Softwareentwicklung" class="mw-redirect" title="Softwareentwicklung">Entwicklung des Programms</a>. Das Ergebnis ist ein fertig zusammengesetztes Programm, das bei vollständig statisch gelinkten Programmen aus einer einzigen <a href="Datei" title="Datei">Datei</a> besteht.
</p><p>Beim statischen Linken werden die Programmmodule der Anwendung einmalig zur <a href="%C3%9Cbersetzungszeit" title="Übersetzungszeit">Übersetzungszeit</a> aufgelöst, im Gegensatz zum dynamischen Linken, bei dem dies jedes Mal zur <a href="Laufzeit_(Informatik)" title="Laufzeit (Informatik)">Laufzeit</a> geschieht.
</p><p>Ein Vorteil ist beim statischen Linken die erhöhte <a href="Portable_Software" title="Portable Software">Portabilität</a> einer Anwendung, da diese <i>nicht</i> auf die Bereitstellung von Programmmodulen z. B. durch das <a href="Betriebssystem" title="Betriebssystem">Betriebssystem</a> angewiesen ist, da die Anwendung diese selbst mitführt; eine <a href="Installation_(Computer)" class="mw-redirect" title="Installation (Computer)">Installation</a> des Programms ist somit nicht erforderlich.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Nachteile sind ein potentiell höherer <a href="Speicherbedarf" class="mw-redirect" title="Speicherbedarf">Speicherbedarf</a>, da Programmmodule nicht von anderen Programmen mitverwendet werden können, und die Notwendigkeit, die Gesamtanwendung neu zu kompilieren und zu linken, falls für ein Teilmodul eine verbesserte <a href="Version_(Software)" title="Version (Software)">Version</a> herausgegeben wurde.<sup id="cite_ref-drepper_3-0" class="reference"><a href="#cite_note-drepper-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>Wegen dieser Nachteile unterstützen einige <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>-Bibliotheken unter <a href="Unixoides_Betriebssystem" class="mw-redirect" title="Unixoides Betriebssystem">Unix-artigen Betriebssystemen</a> das statische Linken oft nicht mehr vollständig.<sup id="cite_ref-drepper_3-1" class="reference"><a href="#cite_note-drepper-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> So erzwingt beispielsweise die <a href="Glibc" class="mw-redirect" title="Glibc">glibc</a> ein dynamisches Linken bei Modulen, die die Benutzer<a href="Authentifizierung" title="Authentifizierung">authentifizierung</a> betreffen. Programme, die diese Module verwenden, sind immer auf die Anwesenheit einer passenden „Laufzeitversion“ der glibc angewiesen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Dynamisches_Linken">Dynamisches Linken</h2></div>
<p>Es ist auch möglich, das Auflösen der Funktions- und Variablennamen zu verschieben, bis das Programm tatsächlich ausgeführt wird. In diesem Fall spricht man von dynamischem Linken. Je nach Betriebssystem geschieht dies durch das Laden vollständiger <a href="Programmbibliothek#Dynamische_Bibliotheken" title="Programmbibliothek"><i>dynamischer Bibliotheken</i></a> (auch bekannt als <i><a href="Dynamic_Link_Library" title="Dynamic Link Library">Dynamic Link Library (DLL)</a></i> oder <i>shared library</i>) oder das gezielte Laden eines Unterprogramms aus einer Programmbibliothek. Dies hat den Vorteil, dass Bibliotheken oder Programme nachträglich leicht ausgetauscht werden können, die aufrufenden Programme kleiner werden und der Speicher nur einmal benötigt wird, wenn mehrere Programme dieselben Komponenten verwenden. Der Nachteil besteht darin, dass sichergestellt werden muss, dass die richtige Bibliothek in der richtigen Version installiert ist (siehe z. B. <a href="DLL-Konflikt" title="DLL-Konflikt">DLL-Konflikt</a>). Nachgeladene Bibliotheken werden oft als <a href="Plug-in" title="Plug-in">Plug-ins</a> bezeichnet.
</p><p>Mischformen der statischen und dynamischen Link-Art sind der Normalfall. Dabei werden gewisse Unterprogramme dem aufrufenden Programm statisch hinzugebunden, andere werden dynamisch nachgeladen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Sprachspezifische_Varianten_beim_Laden">Sprachspezifische Varianten beim Laden</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Überladen"><span id=".C3.9Cberladen"></span>Überladen</h3></div>
<p>Unter „<a href="%C3%9Cberladen" title="Überladen">Überladen</a>“ wird das mehrfache Definieren eines Unterprogramms mit gleichem Bezeichner in Abhängigkeit von der Parameterauswahl verstanden, realisiert durch interne Umbenennung (engl. <i>name mangling</i>). Die nachstehenden Beispiele sind nur in C++ oder Java möglich, <i>nicht</i> aber in reinem C, wo die Überladung von Funktionen nicht vorgesehen ist und der Versuch, eine solche zu verlangen, einen Übersetzungsfehler auslösen würde.
</p><p>Die Funktion <code>void function(int x);</code> ist eine gänzlich andere als <code>void function(float x);</code>. Beide Funktionen haben verschiedene Implementierungen, verschiedene Bezeichnungen in der <a href="Objektcode" title="Objektcode">Objektdatei</a> und haben nichts weiter miteinander zu tun, als dass sie den gleichen Namen tragen. Überladen ist also nur der Funktionsname.
</p><p>Problematisch für das Verständnis und für den Übersetzer sind Aufrufe folgender Art:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">short</span><span class="w"> </span><span class="n">y</span><span class="p">;</span>
<span class="n">function</span><span class="p">(</span><span class="n">y</span><span class="p">);</span>
</pre></div>
<p>Hier muss der Übersetzer entscheiden, ob er eine <a href="Typumwandlung" title="Typumwandlung">Typumwandlung</a> (<i>cast</i>) nach <code>int</code> oder nach <code>float</code> durchführt und die entsprechende Variante der Funktion aufruft. Naheliegend wäre der erste Fall, dennoch hängt hier einiges vom verwendeten Übersetzer ab; der Programmierer ahnt nicht, was sich im Untergrund des Maschinencodes tut. Einige Übersetzer wählen in solchen Fällen das mutmaßlich Richtige (was im konkreten Fall falsch sein kann), andere Übersetzer, beispielsweise GNU, neigen eher dazu, einen Fehler auszugeben, um vom Anwender eine Entscheidung zu verlangen. Er muss die Auswahl dann mit einer Schreibweise wie <code>function((float)(y));</code> per Typumwandlung festlegen.
</p><p>Im Allgemeinen ist es besser, die Möglichkeit des Überladens nicht zu frei zu nutzen, sondern nur für deutliche Unterschiede wie Varianten von Unterprogrammen mit unterschiedlicher Parameteranzahl. Aber auch hier führt die Kombination mit Parametern mit default-Argumenten zu Irritationen. Als sicher kann ein parametersensitiver Funktionsaufruf mit Zeigern verschiedenen Types, die nicht über Basisklassen (<a href="Vererbung_(Programmierung)" title="Vererbung (Programmierung)">Vererbung</a>) ableitbar sind, bezeichnet werden. Hier prüft der Übersetzer jedenfalls die Zeigertyprichtigkeit und meldet entweder einen Fehler oder verwendet genau das passende Unterprogramm:
</p>
<div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">ClassA</span><span class="p">;</span>
<span class="k">class</span><span class="w"> </span><span class="nc">ClassB</span><span class="p">;</span>
<span class="n">function</span><span class="p">(</span><span class="k">class</span><span class="w"> </span><span class="nc">A</span><span class="o">*</span><span class="p">);</span><span class="w"> </span><span class="c1">// Ist deutlich unterschieden von</span>
<span class="n">function</span><span class="p">(</span><span class="k">class</span><span class="w"> </span><span class="nc">B</span><span class="o">*</span><span class="p">);</span>
</pre></div>
<p>wenn ClassA und ClassB in keiner Weise voneinander abgeleitet (vererbt) sind.
</p>
<div class="mw-heading mw-heading3"><h3 id="Überschreiben"><span id=".C3.9Cberschreiben"></span>Überschreiben</h3></div>
<p>Mit dem vom „Überladen“ zu unterscheidenden „<a href="%C3%9Cberschreiben_(OOP)" title="Überschreiben (OOP)">Überschreiben</a>“ wird ein <a href="Dynamische_Bindung" title="Dynamische Bindung">dynamisches Binden</a> bezeichnet, das im Programmablauf entsprechend reagiert, wenn im Quelltext eine Methode (d. h. ein Unterprogramm) einer Basisklasse von der gleichnamigen und gleich parametrisierten Methode der abgeleiteten Klasse überdeckt wird. Zur Laufzeit wird diejenige Methode gerufen, die der Instanz der Daten entspricht. Das wird durch die <a href="Tabelle_virtueller_Methoden" title="Tabelle virtueller Methoden">Tabelle virtueller Methoden</a> ermöglicht, einem Grundkonzept der Implementation von <a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierter Programmierung</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Namenskonflikte">Namenskonflikte</h2></div>
<p>Bei dem Vorgang des Linkens entsteht ein einziger großer, nicht-hierarchischer, gemeinsamer <a href="Namensraum" title="Namensraum">Namensraum</a>. Dadurch kommt es bei großen oder sehr verzweigten Projekten oft zu Namenskonflikten. Für diese Fälle sind <i>weak links</i> üblich, bei denen die Linkreihenfolge entscheidet, welches Modul wo verwendet wird. Programmiersprachen wie z. B. <a href="C%2B%2B" title="C++">C++</a> lösen das Problem dadurch, dass Modulinhalte über hierarchisch aufgebaute Namen angesprochen werden. Ungelöst bleibt damit jedoch beispielsweise das Problem der Anwesenheit einer Bibliothek in verschiedenen Versionen; das Problem ist zum Zeitpunkt des Linkens nur dadurch lösbar, dass dem Linker je nach benötigter Bibliothek unterschiedliche <a href="Suchpfad" title="Suchpfad">Suchpfade</a> mitgegeben werden – jede der in Frage kommenden Bibliotheken unterscheidet sich zwar von der Bezeichnung her, ist aber inhaltlich für einen Linker ununterscheidbar, da in ihr die gleichen Symbole vorhanden sind. Nach dem ersten, statischen Linken ist die Angelegenheit dagegen unproblematisch, da sich die verwendete Bibliothek von da an anhand ihres Namens aufrufen lässt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Leon Presser, John R. White: <cite style="font-style:italic">Linkers and Loaders</cite>. In: <cite style="font-style:italic">ACM Computing Surveys</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>4</span>, 3 (Sept.), 1972, <a href="Internationale_Standardnummer_f%C3%BCr_fortlaufende_Sammelwerke" title="Internationale Standardnummer für fortlaufende Sammelwerke">ISSN</a> <span style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://zdb-katalog.de/list.xhtml?t=iss%3D%220360-0300%22&key=cql">0360-0300</a></span>, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>149–167</span> (<a rel="nofollow" class="external text" href="http://inst.eecs.berkeley.edu/~cs162/sp06/hand-outs/p149-presser-linker-loader.pdf">berkeley.edu</a> [PDF; <span style="white-space:nowrap">1,3<span style="display:inline-block;width:.2em"> </span>MB</span>]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Linker+%28Computerprogramm%29&rft.atitle=Linkers+and+Loaders&rft.au=Leon+Presser%2C+John+R.+White&rft.date=1972&rft.genre=journal&rft.issn=0360-0300&rft.issue=3+%28Sept.%29&rft.jtitle=ACM+Computing+Surveys&rft.pages=149-167&rft.place=New+York&rft.volume=Bd.+4" style="display:none"> </span></li>
<li>John R. Levine: <cite style="font-style:italic">Linkers and Loaders</cite>. Morgan-Kauffman, San Francisco 1999, ISBN 1-55860-496-0.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Linker+%28Computerprogramm%29&rft.au=John+R.+Levine&rft.btitle=Linkers+and+Loaders&rft.date=1999&rft.genre=book&rft.isbn=1558604960&rft.place=San+Francisco&rft.pub=Morgan-Kauffman" style="display:none"> </span></li>
<li>Stanley B. Lippman: <cite style="font-style:italic">C++ Primer</cite>. Addison-Wesley Longman, Amsterdam 2005, ISBN 0-201-72148-1.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Linker+%28Computerprogramm%29&rft.au=Stanley+B.+Lippman&rft.btitle=C%2B%2B+Primer&rft.date=2005&rft.genre=book&rft.isbn=0201721481&rft.place=Amsterdam&rft.pub=Addison-Wesley+Longman" style="display:none"> </span></li>
<li>Randal E. Bryant, David R. O'Hallaron: <cite style="font-style:italic">Computer Systems: A Programmer's Perspective (3. Auflage, insb. Kapitel 7)</cite>. Pearson, Boston 2016, ISBN 978-0-13-409266-9.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Linker+%28Computerprogramm%29&rft.au=Randal+E.+Bryant%2C+David+R.+O%27Hallaron&rft.btitle=Computer+Systems%3A+A+Programmer%27s+Perspective+%283.+Auflage%2C+insb.+Kapitel+7%29&rft.date=2016&rft.genre=book&rft.isbn=9780134092669&rft.place=Boston&rft.pub=Pearson" style="display:none"> </span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.lurklurk.org/linkers/linkers.html">Beginner's Guide to Linkers</a></li>
<li><a rel="nofollow" class="external text" href="https://www-user.tu-chemnitz.de/~heha/hs/linker.htm">Wie Compiler und Linker arbeiten</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">IBM Corporation (Hrsg.): <cite style="font-style:italic">Operating System 360, Linkage Editor, Program Logic Manual</cite>. New York 1967.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Linker+%28Computerprogramm%29&rft.btitle=Operating+System+360%2C+Linkage+Editor%2C+Program+Logic+Manual&rft.date=1967&rft.genre=book&rft.place=New+York" style="display:none"> </span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www-vs.informatik.uni-ulm.de/teach/ss10/bs/docs/BS_D1_12_Hauptspeicher.pdf">Kapitel über Hauptspeicher, Folie 6</a> (PDF) informatik.uni-ulm.de <i>Betriebssysteme</i> – Vorlesung im Hauptstudium</span>
</li>
<li id="cite_note-drepper-3"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-drepper_3-0">a</a></sup> <sup><a href="#cite_ref-drepper_3-1">b</a></sup></span> <span class="reference-text"><span class="cite"><a href="Ulrich_Drepper" title="Ulrich Drepper">Ulrich Drepper</a>: <a rel="nofollow" class="external text" href="https://web.archive.org/web/20041221091001/http://people.redhat.com/drepper/no_static_linking.html"><i>Static Linking Considered Harmful.</i></a> redhat.com, archiviert vom <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */
.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}
/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fpeople.redhat.com%2Fdrepper%2Fno_static_linking.html">Original</a></span> am <span style="white-space:nowrap;">21. Dezember 2004</span><span>;</span><span class="Abrufdatum"> abgerufen am 13. Januar 2012</span> (englisch): „<i>There are still too many people out there who think (or even insist) that static linking has benefits. This has never been the case and never will be the case. […]</i>“</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ALinker+%28Computerprogramm%29&rft.title=Static+Linking+Considered+Harmful&rft.description=Static+Linking+Considered+Harmful&rft.identifier=https%3A%2F%2Fweb.archive.org%2Fweb%2F20041221091001%2Fhttp%3A%2F%2Fpeople.redhat.com%2Fdrepper%2Fno_static_linking.html&rft.creator=%5B%5BUlrich+Drepper%5D%5D&rft.publisher=redhat.com&rft.date=&rft.source=http://people.redhat.com/drepper/no_static_linking.html&rft.language=englisch"> </span></span>
</li>
</ol>
<div class="hintergrundfarbe1 rahmenfarbe1 navigation-not-searchable normdaten-typ-s" style="border-style: solid; border-width: 1px; clear: left; margin-bottom:1em; margin-top:1em; padding: 0.25em; overflow: hidden; word-break: break-word; word-wrap: break-word;" id="normdaten">
<div style="display: table-cell; vertical-align: middle; width: 100%;">
<div>
Normdaten (Sachbegriff): <a href="Gemeinsame_Normdatei" title="Gemeinsame Normdatei">GND</a>: <span class="-print"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4145562-9">4145562-9</a></span> </div>
</div></div></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-12-30" href="https://de.wikipedia.org/wiki/?title=Linker_(Computerprogramm)&oldid=262849576">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>